package controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import pojo.Yytx;
import service.YytxService;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用药提醒控制器
 */
@RestController
@CrossOrigin(origins = "*")
@RequestMapping("/yytx")
public class YytxController {
    @Autowired
    private YytxService yytxService;

    // 新增提醒（添加参数验证）
    @PostMapping("/add")
    public int addYytx(@RequestBody Yytx yytx) {
        // 验证必要字段
        if (yytx.getYhId() == null || yytx.getMedicineName() == null || yytx.getRemindTime() == null) {
            throw new IllegalArgumentException("用户ID、药品名称和提醒时间为必填字段");
        }
        return yytxService.add(yytx);
    }

    // 查询某用户的所有提醒
    @GetMapping("/user/{yhId}")
    public List<Yytx> getByYhId(@PathVariable Integer yhId) {
        return yytxService.findByYhId(yhId);
    }

    // 按时间范围查询提醒
    @GetMapping("/user/{yhId}/time")
    public List<Yytx> getByTimeRange(
            @PathVariable Integer yhId,
            @RequestParam LocalDateTime startTime,
            @RequestParam LocalDateTime endTime
    ) {
        return yytxService.findByTimeRange(yhId, startTime, endTime);
    }

    // 更新提醒
    @PutMapping("/update")
    public int updateYytx(@RequestBody Yytx yytx) {
        if (yytx.getYytxId() == null) {
            throw new IllegalArgumentException("提醒ID不能为空");
        }
        return yytxService.update(yytx);
    }

    // 删除提醒（按ID）
    @DeleteMapping("/{yytxId}")
    public int deleteById(@PathVariable Integer yytxId) {
        return yytxService.deleteById(yytxId);
    }

    // 删除某用户的所有提醒
    @DeleteMapping("/user/{yhId}")
    public int deleteByYhId(@PathVariable Integer yhId) {
        return yytxService.deleteByYhId(yhId);
    }
}